<!DOCTYPE html>
<html lang='en'>

<head>
    <meta charset='UTF-8'>
    <meta name='viewport' content='width=device-width, initial-scale=1.0'>
    <title>Document</title>
    <script src='./vue.js'></script>
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/animate.css/4.1.1/animate.min.css" />
    <style>
        /* 下面我们会解释这些 class 是做什么的 */
        .v-enter-active,
        .v-leave-active {
            transition: opacity 1s ease;
        }

        .v-enter-from,
        .v-leave-to {
            opacity: 0;
        }
    </style>
</head>

<body>
    <div id='app'>
        <!-- 
            v-enter-from：进入动画的起始状态。在元素插入之前添加，在元素插入完成后的下一帧移除。

            v-enter-active：进入动画的生效状态。应用于整个进入动画阶段。在元素被插入之前添加，在过渡或动画完成之后移除。这个 class 可以被用来定义进入动画的持续时间、延迟与速度曲线类型。

            v-enter-to：进入动画的结束状态。在元素插入完成后的下一帧被添加 (也就是 v-enter-from 被移除的同时)，在过渡或动画完成之后移除。

            v-leave-from：离开动画的起始状态。在离开过渡效果被触发时立即添加，在一帧后被移除。

            v-leave-active：离开动画的生效状态。应用于整个离开动画阶段。在离开过渡效果被触发时立即添加，在过渡或动画完成之后移除。这个 class 可以被用来定义离开动画的持续时间、延迟与速度曲线类型。

            v-leave-to：离开动画的结束状态。在一个离开动画被触发后的下一帧被添加 (也就是 v-leave-from 被移除的同时)，在过渡或动画完成之后移除。

         -->
        <button @click="isShow = !isShow">切换显示</button>

        <!-- 
            transition 该组件是用来做过渡或者动画用的，他会在执行的时候自动给元素添加上对应的 class
            通过 name 属性来设置 class 以什么内容开头
            appear 设置初始执行过渡效果
            transition 中只能有一个根标签，如果有多个那么我们可以使用 <transition-group> 
         -->
        <!-- <transition name="a"> -->
        <!-- <transition appear>
            <h1 v-if="isShow">想将钱花在刀刃上，却发现到处都是刀刃。</h1>
            <h1 v-if="isShow">想将钱花在刀刃上，却发现到处都是刀刃。</h1>
            <h1 v-if="isShow">想将钱花在刀刃上，却发现到处都是刀刃。</h1>
        </transition> -->


        <!-- 动画组 -->
        <transition-group enter-active-class="animate__animated animate__tada"
            leave-active-class="animate__animated animate__bounceOutRight" appear>
            <h1 v-if="isShow">想将钱花在刀刃上，却发现到处都是刀刃。</h1>
            <h1 v-if="isShow">想将钱花在刀刃上，却发现到处都是刀刃。</h1>
            <h1 v-if="isShow">想将钱花在刀刃上，却发现到处都是刀刃。</h1>
        </transition-group>

    </div>
</body>
<script>
    const app = {
        data() {
            return {
                isShow: true
            }
        },
        methods: {},
    }
    const vm = Vue.createApp(app).mount('#app')
</script>

</html>